<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Vue监测数据改变的原理_数组</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 
        
     -->
    <!-- 准备好一个容器 -->
    <div id="root">
        <h1>学校信息</h1>
        <h2>学校名称:{{school.name}}</h2>
        <h2>学校地址:{{school.address}}</h2>
        <h2>校长是:{{school.leader}}</h2>
        <hr />
        <h1>学校信息</h1>
        <button @click.once="addSex">添加一个性别,默认值是男</button>
        <h2>学生姓名:{{student.name}}</h2>
        <h2 v-if="student.sex">学生性别:{{student.sex}}</h2>
        <h2>学生年龄:真实{{student.age.rAge}},对外{{student.age.sAge}}</h2>
        <h2>爱好</h2>
        <ul>
            <li v-for="(h,index) in student.hobby" :key="index">
                {{h}}
            </li>
        </ul>
        <h2>朋友们</h2>
        <ul>
            <li v-for="(f,index) in student.friends" :key="index">
                {{f.name}}--{{f.age}}
            </li>
        </ul>
    </div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false; //阻止Vue启动时生成生产提示
    const vm = new Vue({
        el: '#root',
        data: {
            school: {
                name: '尚硅谷',
                address: '北京'
            },
            student: {
                name: 'tom',
                // sex:'男',
                age: {
                    rAge: 40,
                    sAge: 29
                },
                hobby: ['抽烟', '喝酒', '烫头'],
                friends: [
                    { name: 'jerry', age: 35 },
                    { name: 'tony', age: 36 }
                ]
            }
        }, methods: {
            addSex() {
                // Vue.set(this.student, 'sex', '男');
                this.$set(this.student, 'sex', '男');
            }
        },
    });
    // Vue.set(vm._data.student, 'sex', '男');
    // vm.$set(vm._data.student, 'sex', '女');
    // vm.$set(vm.student, 'sex', '女');
    vm.$set(vm.school, 'leader', '一个帅气的男老师');
    console.log(vm);
    //arr的一些方法 
    //push 往数组的最后一个位置添加一个元素
    //pop 删除最后一个元素
    //shift 删除第一个元素
    //unshift 往最前添加一个元素
    //splice 往指定位置插入/删除/替换一个元素
    //let newArr = arr.splice(起始索引index, 删除的个数, 新增元素1, 新增元素2...)   // 返回被删除元素组成的新数组
    //sort 排序一个数组
    //reverse 反转一个数组
    vm.student.hobby.push('学习');
    vm.student.hobby.shift();
    vm.student.hobby.splice(0, 1, '打台球');

    // Array.prototype.push
    let arr = [1, 3, 5, 7, 9];
    arr.push(10);
    console.log(arr);
    console.log(arr.push === Array.prototype.push);
    console.log(vm.student.hobby.push === Array.prototype.push);

    Vue.set(vm.student.hobby,1,'打球');

</script>

</html>